package com.summer.utils;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

/**
 * @todo : List和String类型之间转换
 */
public class ListStringUtils {
	/**
	 * @author xiaolu 2018年1月7日
	 * @todo : 转化以,分割的字符串为List
	 * @param source
	 * @return
	 */
	// 数据与分割符之间不允许有空格
	public static List<Integer> translateToList(String source) {
		List<Integer> result = doTranslateToList(source, ',');
		return result;
	}

	private static List<Integer> doTranslateToList(String source, char seperator) {
		if (StringUtils.isEmpty(StringUtils.trim(source))) {
			return new ArrayList<Integer>(1);
		}

		// 去除末尾的多余分隔符
		if (source.substring(source.length() - 1).equals(seperator)) {
			source = source.substring(0, source.length() - 1);
		}

		// 如果只有一个数据
		if (source.indexOf(seperator) == -1) {
			List<Integer> result = new ArrayList<Integer>(1);
			result.add(Integer.parseInt(source));
			return result;
		}

		String[] strNumbers = source.split("" + seperator);
		List<Integer> result = new ArrayList<Integer>(strNumbers.length);
		for (String num : strNumbers) {
			result.add(Integer.parseInt(num));
		}
		return result;
	}

	/**
	 * @author xiaolu 2018年1月9日
	 * @todo : ‘，’分隔的字符串转为List<String>
	 * @param values
	 * @return
	 */
	public static List<String> getList(String values) {
		if (StringUtils.isEmpty(StringUtils.trim(values))) {
			return new ArrayList<String>(0);
		}

		if (values.indexOf(",") == -1) {
			List<String> lst = new ArrayList<String>(1);
			lst.add(values);
			return lst;
		}

		if (values.charAt(values.length() - 1) == ',') {
			values = values.substring(0, values.length() - 1);
		}

		//去除空格
		String[] splitValue = values.split(",");
		List<String> results = new ArrayList<String>(splitValue.length);
		for (String value : splitValue) {
			results.add(StringUtils.trim(value));
		}
		
		return results;
	}

	/**
	 * @author xiaolu 2018年1月7日
	 * @todo : 转化List为以','分割的字符串
	 * @param source
	 * @return
	 */
	public static String translateToString(List<Integer> sources) {
		String result = doTransateToString(sources, ',');
		return result.substring(0, result.length() - 1);
	}

	private static String doTransateToString(List<Integer> sources, char seperator) {
		if (sources == null || sources.size() <= 0) {
			return "";
		}
		StringBuilder sb = new StringBuilder();
		for (Integer s : sources) {
			sb.append(s).append(seperator);
		}

		// 去除最后多余的分隔符
		String result = sb.toString();
		return result;
	}
}
